﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Obra.SmugMug.Api;
using Obra.Api;

namespace Obra.PowerShell.SmugMug
{
    internal interface ISmugMugClientService
        : ISmugMugClient
    {
        /// <summary>
        /// Get the session.
        /// </summary>
        Obra.Api.ISession Session
        {
            get;
        }

        void LogOn();

        void LogOff();

        #region ISmugMugAlbums Members w/o sessionId

        void CreateAlbum(string title, int categoryId);

        void DeleteAlbum(int albumId);

        AlbumsContract GetAlbums();

        AlbumContract GetAlbumInfo(int albumId);

        AlbumStat GetAlbumStats(int albumId, int month, int year);

        void SortAlbum(int albumId, string by, string direction);

        #endregion

        #region ISmugMugAlbumTemplates w/o sessionId

        List<AlbumTemplateContract> GetAlbumTemplates();
        
        #endregion ISmugMugAlbumTemplates w/o sessionId

        #region ISmugMugCategories Members w/o sessionId

        List<CategoryContract> GetCategories();

        void CategoryCreate(string name);

        void CategoryDelete(int categoryId);

        void CategoryRename(int categoryId, string name);

        #endregion

        #region ISmugMugImages Members w/o sessionId

        void DeleteImage(int imageId);

        ImagesContract GetImages(int albumId);

        ImageExif GetImageExif(int imageId);

        ImageContract GetImageInfo(int imageId);

        ImageUrls GetImageUrls(int imageId, int templateId);

        #endregion

        #region ISmugMugAlbumsChangeSettings Members w/o sessionId

        void ChangeAlbumBackprinting(int albumId, string backPrinting);

        void ChangeAlbumCanRank(int albumId, bool canRank);

        void ChangeAlbumCategoryId(int albumId, int categoryId);

        void ChangeAlbumClean(int albumId, bool clean);

        void ChangeAlbumColorCorrection(int albumId, int colorCorrection);

        void ChangeAlbumComments(int albumId, bool comments);

        void ChangeAlbumCommunityId(int albumId, int communityId);

        void ChangeAlbumDefaultColor(int albumId, bool defaultColor);

        void ChangeAlbumDescription(int albumId, string description);

        void ChangeAlbumExif(int albumId, bool exif);

        void ChangeAlbumExternal(int albumId, bool external);

        void ChangeAlbumFamilyEdit(int albumId, bool familyEdit);

        void ChangeAlbumFileNames(int albumId, bool fileNames);

        void ChangeAlbumFriendEdit(int albumId, bool friendEdit);

        void ChangeAlbumGeography(int albumId, bool geography);

        void ChangeAlbumHeader(int albumId, bool header);

        void ChangeAlbumHideOwner(int albumId, bool hideOwner);

        void ChangeAlbumHighlightId(int albumId, int highlightId);

        void ChangeAlbumKeywords(int albumId, string keywords);

        void ChangeAlbumLarges(int albumId, bool larges);

        void ChangeAlbumOriginals(int albumId, bool originals);

        void ChangeAlbumPassword(int albumId, string password);

        void ChangeAlbumPasswordHint(int albumId, string passwordHint);

        void ChangeAlbumPosition(int albumId, int position);

        void ChangeAlbumPrintable(int albumId, bool printable);

        void ChangeAlbumProofDays(int albumId, int proofDays);

        void ChangeAlbumProtected(int albumId, bool @protected);

        void ChangeAlbumPublic(int albumId, bool @public);

        void ChangeAlbumShare(int albumId, bool share);

        void ChangeAlbumSmugSearchable(int albumId, bool smugSearchable);

        void ChangeAlbumSortDirection(int albumId, bool sortDirection);

        void ChangeAlbumSortMethod(int albumId, string sortMethod);

        void ChangeAlbumSubCategoryId(int albumId, int subCategoryId);

        void ChangeAlbumTemplateId(int albumId, int templateId);

        void ChangeAlbumTitle(int albumId, string title);

        void ChangeAlbumUnsharpAmount(int albumId, float unsharpAmount);

        void ChangeAlbumUnsharpRadius(int albumId, float unsharpRadius);

        void ChangeAlbumUnsharpSigma(int albumId, float unsharpSigma);

        void ChangeAlbumUnsharpThreshold(int albumId, float unsharpThreshold);

        void ChangeAlbumWatermarking(int albumId, bool watermarking);

        void ChangeAlbumWatermarkId(int albumId, int WatermarkId);

        void ChangeAlbumWorldSearchable(int albumId, bool worldSearchable);

        void ChangeAlbumXLarges(int albumId, bool xLarges);

        void ChangeAlbumX2Larges(int albumId, bool x2Larges);

        void ChangeAlbumX3Larges(int albumId, bool x3Larges);

        #endregion

        #region ISmugMugImagesChangeSettings Members w/o sessionId

        void ChangeImageAlbum(int imageId, int albumId);

        void ChangeImageCaption(int imageId, string caption);

        void ChangeImageHidden(int imageId, bool hidden);

        void ChangeImageKeywords(int imageId, string keywords);

        void ChangeImagePosition(int imageId, int position);

        #endregion
    }
}
